package com.shiliuzi.www.controller;

import com.shiliuzi.www.pojo.dto.download.DownloadControlDto;
import com.shiliuzi.www.pojo.dto.download.DownloadExcelCheckDto;
import com.shiliuzi.www.pojo.dto.download.DownloadExcelCtrlDto;
import com.shiliuzi.www.service.DownloadService;
import com.shiliuzi.www.common.Result;
import com.shiliuzi.www.util.powerUtil.Power;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;

//@Controller
@RestController
@RequestMapping("/Download")
@CrossOrigin
public class DownloadController {
    @Resource
    private DownloadService downloadService;

    /**
     * execl导出奖惩，管理员导出全部，成员导出个人
     * @return
     * @author liuyixin
     */
    //TODO 参数名字
    @PostMapping("/downloadRevoke")
    public Result downloadRevoke(@RequestBody Integer id,Integer identity) {
        return downloadService.getExeclInfo(id,identity);
    }

    /**
     * 成员附件下载奖惩记录
     * @return
     * @author liuyixin
     */
    //TODO 参数名字
    @PostMapping("/downloadFile")
    public Result downloadFile(@RequestBody Integer id) {
        return downloadService.downloadRecord(id);
    }

    /**
     * 管理员批量导入奖惩记录，导入excel文件
     * @return
     * @author guojunji
     */
    @Power(powId = 5)
    @PostMapping("/excelRevokeInfo")
    public Result excelRevokeInfo(@RequestParam("file") MultipartFile[] multipartFile) {
        return downloadService.excelRead(multipartFile);
    }

    /**
     * 管理员查询导入数据，根据正确或错误进行查询
     * @return
     */
    @Power(powId = 5)
    @PostMapping("/excelRevokeCheck")
    public Result excelRevokeCheck(@Validated @RequestBody DownloadExcelCheckDto downloadExcelCheckDto) {
        return downloadService.excelCheckInfo(downloadExcelCheckDto);
    }

    /**
     * 管理员导出成功或失败的奖惩记录--捆绑批量导入excel
     * @return
     */
    //TODO 参数名字
    @Power(powId = 6)
    @PostMapping("/excelResultRevoke")
    public Result excelResultRevoke(@Validated @RequestBody DownloadControlDto downloadControlDto) {
        return downloadService.excelWriteInfo(downloadControlDto);
    }

    /**
     * 管理员对于失败/成功奖惩记录的操作--捆绑批量导入excel
     * @return
     */
    //TODO 参数名字
    @Power(powId = 7)
    @PutMapping("/excelError")
    public Result excelError(@Validated @RequestBody DownloadExcelCtrlDto downloadExcelCtrlDto) {
        return downloadService.excelCtrlInfo(downloadExcelCtrlDto);
    }
}
